eab412ac2eca208ec0685523d41c2a0ae3cd9c52,languagetool-language-modules/en/src/main/java/org/languagetool/rules/en/AvsAnRule.java,AvsAnRule,match,#AnalyzedSentence#,74

Before Change


    for (int i = 1; i < tokens.length; i++) {  // ignoring token 0, i.e., SENT_START
      AnalyzedTokenReadings token = tokens[i];
      String prevTokenStr = prevToken != null ? prevToken.getToken() : null;
      if ("a".equalsIgnoreCase(prevTokenStr) || "an".equalsIgnoreCase(prevTokenStr)) {
        Determiner determiner = getCorrectDeterminerFor(token);
        if (prevTokenStr != null) {
          String msg = null;

After Change


  public RuleMatch[] match(final AnalyzedSentence sentence) {
    final List<RuleMatch> ruleMatches = new ArrayList<>();
    final AnalyzedTokenReadings[] tokens = sentence.getTokensWithoutWhitespace();
    int prevTokenIndex = 0;
    for (int i = 1; i < tokens.length; i++) {  // ignoring token 0, i.e., SENT_START
      AnalyzedTokenReadings token = tokens[i];
      String prevTokenStr = prevTokenIndex > 0 ? tokens[prevTokenIndex].getToken() : null;

      boolean isSentenceStart = prevTokenIndex == 1;
      boolean equalsA = "a".equalsIgnoreCase(prevTokenStr);
      boolean equalsAn = "an".equalsIgnoreCase(prevTokenStr);

      if (!isSentenceStart) {
          equalsA = "a".equals(prevTokenStr);
          equalsAn = "an".equals(prevTokenStr);
      }

      if (equalsA || equalsAn) {